#include "DS18B20.h"

#define DS18B20_SKIP_ROM 			0xCC
#define DS18B20_CONVERT_T 			0x44
#define DS18B20_READ_SCRATCHPAD 	0xBE

//温度转化：初始化-->跳过ROM-->开始温度变换
void DS18B20_ConvertT(void)
{
	OneWire_Init();//初始化
	OneWire_SendByte(DS18B20_SKIP_ROM);//跳过ROM
	OneWire_SendByte(DS18B20_CONVERT_T);//温度变换
}

//温度读取：初始化-->跳过ROM-->读暂存器-->连续的读操作
float DS18B20_ReadT(void)
{
	unsigned char TMSB,TLSB;
	int temp;//16位数据
	float T;
	
	OneWire_Init();//初始化
	OneWire_SendByte(DS18B20_SKIP_ROM);//跳过ROM
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);//读暂存器	
	//一旦发送完指令，控制权交给 从机 
	
	TLSB = OneWire_ReceiveByte();//读的Byte0,低8位数据
	TMSB = OneWire_ReceiveByte();//读的Byte1,高8位数据	
	temp = (TMSB << 8) | TLSB;//整合数据
	
	/*温度存储格式整体左移了四位，数据扩大了16倍
	bit0是2的-4次幂，bit4才是2的0次幂 = 1*/
	T = temp / 16.0;	//强制类型转换

	return T;
}
